博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库类&&分页类
阅读量:4286 次
发布时间:2019-05-27

本文共 6916 字,大约阅读时间需要 23 分钟。

今天涨姿势了,学习了数据库和分页的类的封装,感觉很好用,向大家推荐一下

数据库类(把数据库封装起来,更好的对数据操作)

link = mysqli_connect(HOST,USER,PWD,DB); mysqli_set_charset($this->link,CHAR); $this->tabName = $tabName;//接收实例化时,传递的表名 $this->getField();//获取当前数据表内所有的字段 } //查询所有数据 public function select() { $keys = '*';//默认查询全部 if (!empty($this->keys)) { $keys = $this->keys; $this->keys = null;//每次清除查询条件 } $where = ''; if (!empty($this->where)) { $where = 'WHERE '.$this->where; $this->where = null;//每次清除查询条件 } $order = ''; if (!empty($this->order)) { $order = 'ORDER BY '.$this->order; $this->order = null;//每次清除查询条件 } $limit = ''; if (!empty($this->limit)) { $limit = 'LIMIT '.$this->limit; $this->limit = null;//每次清除查询条件 } echo $sql = "SELECT {$keys} FROM {$this->tabName} {$where} {$order} {$limit}"; return $this->query($sql); } //查询单条数据 public function find($findValue, $findKey = 'id') { $keys = '*';//默认查询全部 if (!empty($this->keys)) { $keys = $this->keys; $this->keys = null;//每次清除查询条件 } $sql = "SELECT {$keys} FROM {$this->tabName} WHERE {$findKey}='{$findValue}' LIMIT 1"; $data = $this->query($sql); //判断结果是否为空 if (empty($data)) { return false; } return $data[0]; } //获取排序条件 public function order($order) { $this->order = $order; return $this;//返回自己 } //获取排序条件 public function limit($limit) { $this->limit = $limit; return $this;//返回自己 } //获取要查询的条件 public function where($where) { $this->where = $where; return $this;//返回自己 } //指定查询条件 public function field($arr) { //判断传递的参数是否是数组 if (!is_array($arr)) return $this; //过滤非法参数 foreach ($arr as $key => $val) { if (!in_array($val,$this->fields)) { unset($arr[$key]); } } //如果处理好的参数为空,直接返回自己 if (empty($arr)) return $this; //生成SQL条件,存为属性. $this->keys = implode(',',$arr); //返回自己,用于对象链操作 return $this; } //删除 public function del($delValue, $delKey = 'id') { $sql = "DELETE FROM {$this->tabName} WHERE {$delKey}='{$delValue}'"; return $this->execute($sql); } //增加 public function add($data = array()) { //直接给参数POST不合适 //判断$data 是否为空,赋值为POST if (empty($data)) { $data = $_POST; } //筛选POST数据 foreach ($data as $k => $v) { //如果POST里的$k 在字段列表之中 就保留 if (in_array($k, $this->fields)) { $list[$k] = $v; } } //生成SQL中的 key 和value $keys = implode(',',array_keys($list)); $values = implode("','",array_values($list)); $sql = "INSERT INTO {$this->tabName} ({$keys}) VALUES ('{$values}')"; //执行添加操作, 返回 自增ID 或者 false return $this->execute($sql); } //修改 public function update($data = array()) { //直接给参数POST不合适 //判断$data 是否为空,赋值为POST if (empty($data)) { $data = $_POST; } //筛选POST里面的数据 foreach ($data as $k => $v) { //如果POST里的$k 在字段列表中 if (in_array($k, $this->fields) && $k != $this->pk) { $list[] = "`{$k}`='{$v}'"; } } //生成SET条件 $set = implode(',',$list); $sql = "UPDATE {$this->tabName} SET {$set} WHERE `{$this->pk}`='{$data[$this->pk]}'"; return $this->execute($sql); } //统计条数数量 public function count() { $where = ''; if (!empty($this->where)) { $where = 'WHERE '.$this->where; $this->where = null;//每次清除查询条件 } $sql = "SELECT COUNT(*) totel FROM {$this->tabName} {$where}"; $totel = $this->query($sql); // var_dump($totel); return $totel[0]['totel']; } /*************************辅助方法*****************************/ //查询 private function query($sql) { //执行SQL语句 $result = mysqli_query($this->link, $sql); //判断查询结果 if ($result && mysqli_num_rows($result) > 0 ) { $list = array(); $list = mysqli_fetch_all($result,MYSQLI_ASSOC); mysqli_free_result($result); return $list;//返回查询结果的二维数组 } else { return false;//查询失败,返回false } } //增删改 删改时返回true/false 增时:自增ID private function execute($sql) { //执行SQL语句 $result = mysqli_query($this->link, $sql); //处理结果集 if ($result && mysqli_affected_rows($this->link) > 0 ) { //添加时 回返回自增ID if (mysqli_insert_id($this->link) > 0 ) { //添加时 返回自增ID return mysqli_insert_id($this->link); } else { //删改时 的操作完成 return true; } } else { //操作失败 return false; } } //获取数据表内的所有字段 和主键 private function getField() { //查询表结构 $sql = "DESC {$this->tabName}"; $list = $this->query($sql); // var_dump($list); $fields = array(); foreach ($list as $key => $val) { $fields[] = $val['Field']; //获取主键 if ($val['Key'] == 'PRI') { $this->pk = $val['Field']; } } // var_dump($fields); //给属性赋值 $this->fields = $fields; } //销毁资源 public function __destruct() { mysqli_close($this->link); }}

分页类(使得对数据库的记录更好的进行分页处理)

total = $total;//得到总条数 $this->num = $num;//得到每页显示数 $this->getAllPage();//得到总页数 $this->getUrl();//获取当前页的URL路径 $this->getPage();//获取页码 } //计算总页数 protected function getAllPage() { $this->allPage = ceil($this->total / $this->num); } //获取当前页的URL路径 protected function getUrl() { $this->url = $_SERVER['PHP_SELF']; } //获取页码 protected function getPage() { //GET里获取参数 $page = empty($_GET['p'])?1:$_GET['p']; //范围判断 $page = max($page ,1); $page = min($this->allPage , $page); //给属性赋值 $this->page = $page; } //生成分页的HTML代码 public function show() { //获取搜索条件 $params = ""; foreach ($_GET as $k => $v) { //将页码条件排除掉 if ($k == 'p') continue; //拼接搜索条件 $params .= "&{$k}={$v}"; } /*共X条 当前x/y页 首页/上/下/尾 */ $html = "共{$this->total}条 "; $html .= "当前{$this->page} / {$this->allPage}页 "; $html .= "首页 "; $html .= "上一页 "; $html .= "下一页 "; $html .= "尾页"; return $html; } //返回limit条件 public function limit() { // (当前页 - 1) * 每页显示数 $limit = ($this->page - 1) * $this->num.','.$this->num;//x,y return $limit; }}

转载地址:http://ajsgi.baihongyu.com/

你可能感兴趣的文章
yum配置与使用(很详细)
查看>>
yum的使用
查看>>
./configure 的配置和用法
查看>>
web.config
查看>>
web.xml
查看>>
web.xml(简介介绍)
查看>>
asp.net控件
查看>>
Java 面试题
查看>>
Java 代码安全(Coding Safe)
查看>>
正则表达式
查看>>
常用正则表达式大全
查看>>
JDK1.5(jdk5.0)新特性
查看>>
JDK1.6(jdk6.0)新特性
查看>>
JDK1.7(jdk7.0)新特性
查看>>
JDK1.8(jdk8.0)新特性
查看>>
struts2.xml配置文件
查看>>
梦想在三十岁起航!__来自黑马程序员69期安卓班的学员
查看>>
java中的集合存储结构
查看>>
java中的集合存储结构
查看>>
Java基础——运算符
查看>>